<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 12 , 5 , 2 , 4 , 1     
        // 按照从小到大的顺序排列

        // 分析：

        // 找到最小的值  放在第一个位置上

        // 找到第二小的值   放在第二个位置上

        // 找到第三小的值   放在第三个位置上

        // 。。。

        var arr = [12 , 5 , 2 , 4 , 1 , 9] ;

        console.log(arr) ;

        // // 1 尝试找到最小值

        // var min = arr[0] ;  // 假设第一个数就是最小的

        // // 拿min和后面的所有的数进行比较

        // for(var i = 1 ; i < arr.length ; i++) {
        //     // 如果min比后面的值还要大
        //     if(min > arr[i]) {
        //         // min 只存更小的这个数
        //         min = arr[i] ;
        //     }
        // }

        // console.log(min) ;


        // // 2 把最小值放在第一个位置上  --- 把min和第一个位置上的值进行交换

        // arr[0] = min ;  // 如果我们直接交换 --- 问题：第一个位置上的数不见了？？？？  数组不对了





        // console.log(arr) ;


       

        // // 改进  --- 实现交换？？？？

        // var min = 0 ;  /// min存储的是下标   假设第一个位置上的数是最小的
        // for(var i = 1 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;  // min 只存储值最小的下标
        //     }
        // }
        // console.log(min) ; 

        // // 拿第一个位置上的数和最小的数进行交换
        // var t = arr[0] ;
        // arr[0] = arr[min] ;
        // arr[min] = t ;

        // console.log(arr) ;



        // // 假设第二个位置上的数是最小的
        // var min = 1 ;  /// min存储的是下标   假设第一个位置上的数是最小的
        // for(var i = 2 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;  // min 只存储值最小的下标
        //     }
        // }
        // console.log(min) ; 

        // // 拿第二个位置上的数和最小的数进行交换
        // var t = arr[1] ;
        // arr[1] = arr[min] ;
        // arr[min] = t ;

        // console.log(arr) ;


        // // 假设第三个位置上的数是最小的
        // var min = 2 ;  /// min存储的是下标   假设第一个位置上的数是最小的
        // for(var i = 3 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;  // min 只存储值最小的下标
        //     }
        // }
        // console.log(min) ; 

        // // 拿第二个位置上的数和最小的数进行交换
        // var t = arr[2] ;
        // arr[2] = arr[min] ;
        // arr[min] = t ;

        // console.log(arr) ;

        // 第一轮
            // 假设第一个位置上的数是最小的，拿他和后面所有的数进行比较  min 存最小的数的下标
            // 把第一个位置上的数和min进行交换

        // 第二轮
            // 假设第二个位置上的数是最小的，拿他和后面所有的数进行比较  min 存最小的数的下标
            // 把第二个位置上的数和min进行交换

        // 第三轮
            // 假设第三个位置上的数是最小的，拿他和后面所有的数进行比较  min 存最小的数的下标
            // 把第三个位置上的数和min进行交换




        // 假设的次数比数组的长度少一次  j  控制假设的次数
        for(var j = 0 ; j < arr.length - 1 ; j++) {
            // 假设第二个位置上的数是最小的
            var min = j ;  /// min存储的是下标   假设第一个位置上的数是最小的
            // 拿min和后面所有的值进行比较
            for(var i = j + 1 ; i < arr.length ; i++) {
                if(arr[min] > arr[i]) {
                    min = i ;  // min 只存储值最小的下标
                }
            }
            console.log(min) ; 

            // 拿第j个位置上的数和最小的数进行交换
            var t = arr[j] ;
            arr[j] = arr[min] ;
            arr[min] = t ;

            // console.log(arr) ;
        }

        console.log(arr) ;








    </script>
    
</body>
</html>